Computing devices are often used to communicate over a network such as the Internet. To access the Internet, computing devices typically have to connect to a router (which can be connected to a modem or networking device(s) for accessing the Internet). Conventionally, when a computing device makes a request for a website (or other network resource), the router directs the request from the computing device to a web server hosting the website. The computing device communicates (via the router) with the web server hosting the website to obtain data associated with the website in order to satisfy the request. Having obtained the data, the computing device can process and utilize the data (e.g., render the website using the data associated with the website). However, having the computing device communicate with the web server can result in increased latency and increased power consumption for the computing device. Moreover, the data associated with the website can be provided by multiple web servers such that the computing device will have to communicate with the multiple web servers in order to obtain the data, thereby further increasing latency and power consumption for the computing device. For example, the computing device communicates with a web server hosting a website requested by the device. The web server sends a response back to the computing device indicating that there are additional data/resources associated with the website that need to be retrieve from additional web servers that host the additional data/resources. The computing device has to make separate requests to each of the additional web servers to retrieve the additional data/resources in order to get and appropriately render the requested website. This can cause data transmission errors, network slowness, reduced network responsiveness, reduced battery life, etc., thereby decreasing the overall user experience.